from flask import session,g
from info.models import User
import logging
from functools import wraps




def do_rank(index):
    """
    自定义过滤器：根据index返回 'first', 'second', 'third', ''
    :param index: 外界模板遍历出来的索引
    :return: 'first', 'second', 'third', ''
    """
    if index == 1:
        return 'first'
    elif index == 2:
        return 'second'
    elif index == 3:
        return 'third'
    else:
        return ''

def user_login_data(view_func):

    @wraps(view_func)   # 不要让装饰器装饰的函数的__name__属性被修改，防止路由出错
    def wrapper(*args, **kwargs):
        user_id = session.get('user_id', None)
        user = None
        if not user:
            try:
                user = User.query.get(user_id)
            except Exception as e:
                logging.error(e)

        # 使用g变量存储查询到的用户基本信息
        # g变量是应用上下文，只在当前的请求中有效，不同的请求中 各自的g变量不同
        # g.user 表示定义上文，下文可以在视图函数中读取，因为进入装饰器的请求和视图函数的请求是同一个请求
        g.user = user

        return view_func(*args, **kwargs)
    return wrapper